home *** CD-ROM | disk | FTP | other *** search
- unit TblEdit2;
-
- {$ifdef Ver80} { Delphi 1.0x }
- {$define DelphiLessThan4}
- {$endif}
- {$ifdef Ver90} { Delphi 2.0x }
- {$define DelphiLessThan4}
- {$endif}
- {$ifdef Ver93} { C++ Builder 1.0x }
- {$define DelphiLessThan4}
- {$endif}
- {$ifdef Ver100} { Delphi 3.0x }
- {$define DelphiLessThan4}
- {$endif}
- {$ifdef Ver110} { C++ Builder 3.0x }
- {$define DelphiLessThan4}
- {$endif}
-
- interface
-
- procedure Register;
-
- implementation
-
- uses
- DBTables, DsgnIntf, Classes, Dialogs, SysUtils;
-
- type
- TTableEditor = class(TComponentEditor)
- private
- FEditor: TComponentEditor;
- public
- constructor Create(AComponent: TComponent; ADesigner:
- {$ifdef DelphiLessThan4}TFormDesigner{$else}IFormDesigner{$endif}); override;
- destructor Destroy; override;
- function GetVerbCount: Integer; override;
- function GetVerb(Index: Integer): string; override;
- procedure ExecuteVerb(Index: Integer); override;
- procedure Edit; override;
- end;
-
- const
- NewVerbs = 3;
- TableEditorClass: TComponentEditorClass = nil;
-
- constructor TTableEditor.Create(AComponent: TComponent; ADesigner:
- {$ifdef DelphiLessThan4}TFormDesigner{$else}IFormDesigner{$endif});
- begin
- inherited Create(AComponent, ADesigner);
- if TableEditorClass <> nil then
- FEditor := TableEditorClass.Create(AComponent, ADesigner);
- end;
-
- destructor TTableEditor.Destroy;
- begin
- FEditor.Free;
- FEditor := nil;
- inherited Destroy
- end;
-
- function TTableEditor.GetVerbCount: Integer;
- begin
- Result := FEditor.GetVerbCount + NewVerbs;
- ShowMessage(Format(
- 'Someone wants to know how many component editors ' +
- 'we are adding. Well, the answer is %d', [Result]))
- end;
-
- function TTableEditor.GetVerb(Index: Integer): string;
- begin
- { Someone wants the menu caption for one of our component editors }
- case Index of
- 0..NewVerbs - 1: Result := Format('Component editor no. %d', [Index + 1])
- else
- Result := FEditor.GetVerb(Index - NewVerbs)
- end;
- end;
-
- procedure TTableEditor.ExecuteVerb(Index: Integer);
- begin
- ShowMessage('Someone has chosen one of our component editors. Here goes...');
- case Index of
- 0..NewVerbs - 1: ShowMessage(GetVerb(Index))
- else
- FEditor.ExecuteVerb(Index - NewVerbs)
- end;
- end;
-
- procedure TTableEditor.Edit;
- begin
- ExecuteVerb(0);
- end;
-
- procedure Register;
- var
- TmpTable: TTable;
- TmpTableEditor: TComponentEditor;
- begin
- { Make a temporary table }
- TmpTable := TTable.Create(nil);
- try
- { What is the current component editor }
- TmpTableEditor := GetComponentEditor(TmpTable, nil);
- try
- { Make a note of its type }
- TableEditorClass := TComponentEditorClass(TmpTableEditor.ClassType)
- finally
- TmpTableEditor.Free
- end
- finally
- TmpTable.Free
- end;
- { Now add our component editor to the foray }
- RegisterComponentEditor(TTable, TTableEditor);
- end;
-
- end.
-